package com.mask.token.annotation;

import java.lang.annotation.*;

/**
 * 需要权限注解
 * 标记需要特定权限才能访问的方法或类
 *
 * @author mask
 * @since 1.0.0
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequirePermission {

    /**
     * 需要的权限
     */
    String[] value() default {};

    /**
     * 权限模式：AND（需要所有权限）或 OR（需要任一权限）
     */
    Mode mode() default Mode.AND;

    /**
     * 权限不足时的错误消息
     */
    String message() default "权限不足";

    /**
     * 权限模式枚举
     */
    enum Mode {
        /**
         * 需要所有权限
         */
        AND,
        /**
         * 需要任一权限
         */
        OR
    }
}
